package context

// import (
// 	"os"
// 	"reflect"
// 	"testing"

// 	"github.com/go-git/go-billy/v5"
// 	"github.com/go-git/go-billy/v5/memfs"
// 	"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/apis/v1alpha1"
// )

// func Test_readFile(t *testing.T) {
// 	mustReadFile := func(path string) []byte {
// 		t.Helper()
// 		data, err := os.ReadFile(path)
// 		if err != nil {
// 			t.Fatal(err)
// 		}
// 		return data
// 	}
// 	tests := []struct {
// 		name     string
// 		f        billy.Filesystem
// 		filepath string
// 		want     []byte
// 		wantErr  bool
// 	}{{
// 		name:     "empty",
// 		filepath: "",
// 		want:     nil,
// 		wantErr:  true,
// 	}, {
// 		name:     "does not exist",
// 		filepath: "../_testdata/values/doesnotexist",
// 		want:     nil,
// 		wantErr:  true,
// 	}, {
// 		name:     "bad format",
// 		filepath: "../_testdata/values/bad-format.yaml",
// 		want:     mustReadFile("../_testdata/values/bad-format.yaml"),
// 		wantErr:  false,
// 	}, {
// 		name:     "valid",
// 		filepath: "../_testdata/values/limit-configmap-for-sa.yaml",
// 		want:     mustReadFile("../_testdata/values/limit-configmap-for-sa.yaml"),
// 		wantErr:  false,
// 	}, {
// 		name:     "empty (billy)",
// 		f:        memfs.New(),
// 		filepath: "",
// 		want:     nil,
// 		wantErr:  true,
// 	}, {
// 		name: "valid (billy)",
// 		f: func() billy.Filesystem {
// 			f := memfs.New()
// 			file, err := f.Create("valid.yaml")
// 			if err != nil {
// 				t.Fatal(err)
// 			}
// 			defer file.Close()
// 			if _, err := file.Write([]byte("foo: bar")); err != nil {
// 				t.Fatal(err)
// 			}
// 			return f
// 		}(),
// 		filepath: "valid.yaml",
// 		want:     []byte("foo: bar"),
// 		wantErr:  false,
// 	}}
// 	for _, tt := range tests {
// 		t.Run(tt.name, func(t *testing.T) {
// 			got, err := readFile(tt.f, tt.filepath)
// 			if (err != nil) != tt.wantErr {
// 				t.Errorf("readFile() error = %v, wantErr %v", err, tt.wantErr)
// 				return
// 			}
// 			if !reflect.DeepEqual(got, tt.want) {
// 				t.Errorf("readFile() = %v, want %v", got, tt.want)
// 			}
// 		})
// 	}
// }

// func TestLoad(t *testing.T) {
// 	tests := []struct {
// 		name     string
// 		f        billy.Filesystem
// 		filepath string
// 		want     *v1alpha1.Values
// 		wantErr  bool
// 	}{{
// 		name:     "empty",
// 		filepath: "",
// 		want:     nil,
// 		wantErr:  true,
// 	}, {
// 		name:     "does not exist",
// 		filepath: "../_testdata/values/doesnotexist",
// 		want:     nil,
// 		wantErr:  true,
// 	}, {
// 		name:     "bad format",
// 		filepath: "../_testdata/values/bad-format.yaml",
// 		want:     nil,
// 		wantErr:  true,
// 	}, {
// 		name:     "valid",
// 		filepath: "../_testdata/values/limit-configmap-for-sa.yaml",
// 		want: &v1alpha1.Values{
// 			ValuesSpec: v1alpha1.ValuesSpec{
// 				NamespaceSelectors: []v1alpha1.NamespaceSelector{{
// 					Name: "test1",
// 					Labels: map[string]string{
// 						"foo.com/managed-state": "managed",
// 					},
// 				}},
// 				Policies: []v1alpha1.Policy{{
// 					Name: "limit-configmap-for-sa",
// 					Resources: []v1alpha1.Resource{{
// 						Name: "any-configmap-name-good",
// 						Values: map[string]interface{}{
// 							"request.operation": "UPDATE",
// 						},
// 					}, {
// 						Name: "any-configmap-name-bad",
// 						Values: map[string]interface{}{
// 							"request.operation": "UPDATE",
// 						},
// 					}},
// 				}},
// 			},
// 		},
// 		wantErr: false,
// 	}}
// 	for _, tt := range tests {
// 		t.Run(tt.name, func(t *testing.T) {
// 			got, err := Load(tt.f, tt.filepath)
// 			if (err != nil) != tt.wantErr {
// 				t.Errorf("Load() error = %v, wantErr %v", err, tt.wantErr)
// 				return
// 			}
// 			if !reflect.DeepEqual(got, tt.want) {
// 				t.Errorf("Load() = %v, want %v", got, tt.want)
// 			}
// 		})
// 	}
// }
